MVC (Model-View-Controller) আর্কিটেকচার একটি জনপ্রিয় সফটওয়্যার ডিজাইন প্যাটার্ন যা অ্যাপ্লিকেশনগুলির মধ্যে ডেটা, ইউজার ইন্টারফেস এবং বিজনেস লজিক আলাদা করতে ব্যবহৃত হয়। এটি বিশেষভাবে ওয়েব অ্যাপ্লিকেশন এবং ডেক্সটপ অ্যাপ্লিকেশন ডেভেলপমেন্টে ব্যবহার করা হয়, যেখানে ক্লিয়েন্ট এবং সার্ভার সাইডের লজিক পৃথকভাবে পরিচালিত হয়।
ASP.NET Core-এ MVC আর্কিটেকচার ব্যবহার করা হয় একটি ওয়েব অ্যাপ্লিকেশন তৈরি করার জন্য, যা Model, View এবং Controller এর মাধ্যমে ডেটা এবং ইউজার ইন্টারফেসের মধ্যে যোগাযোগ স্থাপন করে।
Model হলো অ্যাপ্লিকেশনের ডেটা এবং বিজনেস লজিকের প্রতিনিধিত্ব। এটি সাধারণত ডেটাবেসের সাথে সম্পর্কিত এবং ব্যবহারকারীর ইনপুটের প্রেক্ষিতে ডেটা প্রক্রিয়া করে। Model অ্যাপ্লিকেশনের লজিকাল অংশ যা ডেটা এবং তার প্রক্রিয়াকরণের জন্য দায়ী।
Model এর কাজ:
উদাহরণ:
যদি আপনি একটি ব্লগ অ্যাপ্লিকেশন তৈরি করেন, তবে ব্লগ পোস্টের ডেটা এবং সেগুলির সাথে সম্পর্কিত বিজনেস লজিক Model-এ থাকবে।
View হলো ইউজার ইন্টারফেসের অংশ। এটি ডেটা প্রেজেন্টেশনের জন্য দায়ী এবং ইউজারের কাছে তথ্য উপস্থাপন করে। View Model থেকে ডেটা গ্রহণ করে এবং এটি HTML, CSS বা অন্যান্য ফরম্যাটে রেন্ডার করে।
View এর কাজ:
উদাহরণ:
একটি ব্লগ পেজ যেখানে ব্লগ পোস্টগুলি তালিকা আকারে দেখানো হয়, এবং ব্যবহারকারী নতুন পোস্ট যোগ করতে পারে—এটি হবে View।
Controller হলো অ্যাপ্লিকেশনের মেজর অংশ যা Model এবং View এর মধ্যে যোগাযোগের দায়িত্বে থাকে। এটি ইউজারের ইনপুট গ্রহণ করে এবং তা যথাযথ Model বা View এ প্রেরণ করে। Controller লজিকাল অংশ হিসেবে কাজ করে যা ইউজার থেকে অ্যাকশন গ্রহণ করে, Model-এ ডেটা আপডেট করে এবং View-এ রেসপন্স প্রেরণ করে।
Controller এর কাজ:
উদাহরণ:
একটি ব্লগ অ্যাপ্লিকেশনে, ব্লগ পোস্ট দেখার জন্য যখন ইউজার ক্লিক করবে, তখন Controller সেই রিকোয়েস্ট গ্রহণ করে Model থেকে পোস্ট ডেটা নিয়ে View-এ রেন্ডার করবে।
Model, View, এবং Controller আলাদা হওয়ায়, কোডের প্রতিটি অংশ পুনরায় ব্যবহার করা সহজ হয়। একাধিক View বা Controller একটি Model ব্যবহার করতে পারে।
MVC আর্কিটেকচার কোডকে আলাদা করে দেওয়ার ফলে, প্রতিটি অংশ আলাদাভাবে টেস্ট করা সম্ভব হয়। Model, View এবং Controller আলাদা হওয়ায় একে একে টেস্ট করা সহজ হয়।
এটি কোডের ভালো মান বজায় রাখতে সাহায্য করে কারণ প্রত্যেকটি অংশ (Model, View, Controller) একটি নির্দিষ্ট দায়িত্ব পালন করে এবং পরিবর্তন বা আপডেট করা সহজ হয়।
এটি অ্যাপ্লিকেশনকে সহজে স্কেল করার সুযোগ দেয়, কারণ Model, View, এবং Controller-এর মধ্যে যে কোনও একটি পরিবর্তন করা হলে তা অন্য অংশগুলোর ওপর প্রভাব ফেলবে না।
এটির মাধ্যমে, বিজনেস লজিক, ডেটা, এবং প্রেজেন্টেশন একে অপর থেকে আলাদা রাখা হয়, যা কোডের রক্ষণাবেক্ষণ এবং ডিবাগিংকে সহজ করে তোলে।
ধরা যাক আপনি একটি ব্লগ অ্যাপ তৈরি করতে চান, যেখানে আপনি ব্লগ পোস্ট দেখবেন, তৈরি করবেন বা মুছে ফেলবেন।
BlogPost
ক্লাস থাকবে, যা ডেটাবেসের সাথে সংযুক্ত হবে এবং ব্লগ পোস্টের ডেটা ধারণ করবে (যেমন: শিরোনাম, বিষয়বস্তু, তৈরি তারিখ)।BlogController
ক্লাস থাকবে, যা ব্লগ সম্পর্কিত সমস্ত অ্যাকশন (যেমন ব্লগ পোস্ট তৈরি, দেখানো, মুছে ফেলা) পরিচালনা করবে।MVC আর্কিটেকচার একটি খুবই শক্তিশালী এবং জনপ্রিয় ডিজাইন প্যাটার্ন যা অ্যাপ্লিকেশন তৈরি এবং রক্ষণাবেক্ষণকে সহজ, কার্যকরী এবং স্কেলেবল করে তোলে। ASP.NET Core এই আর্কিটেকচারের মাধ্যমে ডেভেলপারদের একটি পরিষ্কার এবং সুসংগঠিত কোডবেস প্রদান করে, যা ডেভেলপমেন্ট এবং মেইন্টেন্যান্সের জন্য অত্যন্ত সুবিধাজনক।
MVC হলো Model-View-Controller প্যাটার্নের সংক্ষিপ্ত রূপ। এটি একটি স্থাপত্যিক প্যাটার্ন যা সফটওয়্যার ডেভেলপমেন্টে UI (User Interface) এবং ব্যাকএন্ড লজিকের মধ্যে বিভাজন তৈরি করতে ব্যবহৃত হয়। ASP.NET Core-এ এই প্যাটার্নটি অত্যন্ত জনপ্রিয় এবং শক্তিশালী, যা ডেভেলপারদের ওয়েব অ্যাপ্লিকেশন নির্মাণে সুসংগঠিত এবং সহজ পদ্ধতি প্রদান করে।
MVC প্যাটার্ন অ্যাপ্লিকেশনকে তিনটি ভিন্ন কম্পোনেন্টে ভাগ করে:
Model হলো ডেটার প্রতিনিধিত্বকারী স্তর। এটি ডেটাবেস, বিজনেস লজিক এবং ডেটা প্রসেসিং-এর সাথে কাজ করে। Model ডেটার কাঠামো এবং ডেটাবেস অপারেশনের জন্য দায়ী। এটি মূলত ডেটার স্টোরেজ এবং হ্যান্ডলিং সংক্রান্ত কার্যক্রম সম্পাদন করে।
কাজের ক্ষেত্র:
উদাহরণ:
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}
View হলো ব্যবহারকারীর সামনে প্রদর্শিত UI (User Interface) অংশ। এটি শুধুমাত্র ডেটা উপস্থাপনের জন্য দায়ী এবং ডেটার কোন প্রকার প্রসেসিং করে না। View-তে HTML, CSS এবং Razor Syntax ব্যবহার করে UI তৈরি করা হয়।
কাজের ক্ষেত্র:
উদাহরণ:
<h1>Product List</h1>
<table>
<tr>
<th>Id</th>
<th>Name</th>
<th>Price</th>
</tr>
@foreach (var product in Model)
{
<tr>
<td>@product.Id</td>
<td>@product.Name</td>
<td>@product.Price</td>
</tr>
}
</table>
Controller হলো ব্যবহারকারী এবং সিস্টেমের মধ্যে যোগাযোগের মাধ্যম। এটি রিকোয়েস্ট গ্রহণ করে, Model থেকে ডেটা সংগ্রহ করে এবং সেই ডেটা View-তে পাঠায়। Controller মূলত অ্যাপ্লিকেশনের ডেটা প্রসেসিং লজিক এবং রিকোয়েস্ট রেসপন্স সাইকেলের জন্য দায়ী।
কাজের ক্ষেত্র:
উদাহরণ:
public class ProductController : Controller
{
public IActionResult Index()
{
var products = new List<Product>
{
new Product { Id = 1, Name = "Laptop", Price = 800.00M },
new Product { Id = 2, Name = "Smartphone", Price = 500.00M }
};
return View(products);
}
}
ASP.NET Core-এ MVC প্যাটার্নটি অত্যন্ত কার্যকরী কারণ এটি ডেভেলপারদের একটি সুসংগঠিত এবং উন্নততর ওয়েব অ্যাপ্লিকেশন তৈরির সুযোগ দেয়। এটি বিশেষ করে ডেটা-চালিত ওয়েব অ্যাপ এবং API তৈরিতে ব্যবহৃত হয়। Routing, Middleware, এবং Dependency Injection এর মতো ফিচার MVC প্যাটার্নকে আরও শক্তিশালী করে।
MVC প্যাটার্ন ওয়েব ডেভেলপমেন্টে একটি মানসম্মত পদ্ধতি এবং ডেভেলপারদের জন্য এটি সহজ, কার্যকরী এবং প্রায়শই অপরিহার্য।
ASP.NET Core অ্যাপ্লিকেশন তৈরি করার সময় MVC (Model-View-Controller) আর্কিটেকচার একটি খুবই জনপ্রিয় প্যাটার্ন। এটি অ্যাপ্লিকেশনের লজিক, ইউজার ইন্টারফেস এবং ডেটা ম্যানিপুলেশনকে পৃথক করে, যার ফলে কোডের রক্ষণাবেক্ষণ সহজ হয় এবং অ্যাপ্লিকেশনের স্কেলেবিলিটি বৃদ্ধি পায়। MVC প্যাটার্নের মূল তিনটি উপাদান হলো Model, View, এবং Controller। প্রতিটির ভুমিকা আলাদা এবং এটি অ্যাপ্লিকেশনের কার্যকারিতাকে সুসংগঠিত করে।
Model হল অ্যাপ্লিকেশনের ডেটা, লজিক এবং ব্যবসায়িক নিয়ম (business rules) পরিচালনা করার জন্য দায়ী। Model সাধারণত ডেটাবেসের সঙ্গে যোগাযোগ করে এবং তথ্য সংগ্রহ, আপডেট বা মুছে ফেলতে সাহায্য করে।
User
, Product
, Order
ইত্যাদি।public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}
এখানে Product
একটি Model যা ডেটাবেসে একটি প্রোডাক্টের তথ্য ধারণ করবে।
View হল ইউজার ইন্টারফেসের অংশ, যা ইউজারের সাথে অ্যাপ্লিকেশনের ইন্টারঅ্যাকশন প্রদান করে। View মূলত HTML, CSS, এবং JavaScript এর মাধ্যমে ডেটা প্রেজেন্ট করে। View শুধুমাত্র ডিসপ্লে বা দেখানোর জন্য দায়ী এবং এর মধ্যে লজিকের কাজ খুবই সীমিত থাকে।
Product
এর নাম, দাম ইত্যাদি)।@model Product
<div>
<h1>@Model.Name</h1>
<p>Price: $@Model.Price</p>
</div>
এখানে Product
Model এর ডেটা View-এ প্রদর্শিত হবে, যেমন প্রোডাক্টের নাম এবং দাম।
Controller অ্যাপ্লিকেশনের ইনপুট গ্রহণ করে এবং Model এবং View-এর মধ্যে যোগাযোগ স্থাপন করে। Controller ইউজারের রিকোয়েস্টকে প্রোসেস করে, প্রয়োজনীয় ডেটা মডেল থেকে নিয়ে তা ভিউতে প্রেরণ করে। Controller অ্যাপ্লিকেশন লজিকের নিয়ন্ত্রণকারী।
public class ProductController : Controller
{
private readonly IProductService _productService;
public ProductController(IProductService productService)
{
_productService = productService;
}
public IActionResult Index()
{
var products = _productService.GetAllProducts();
return View(products);
}
}
এখানে ProductController
ইউজারের রিকোয়েস্ট গ্রহণ করে এবং Product
ডেটা Index
View-এ পাঠায়।
এই তিনটি উপাদান মিলে অ্যাপ্লিকেশনের কার্যকারিতা এবং রক্ষণাবেক্ষণ সহজ করে, কারণ তারা প্রতিটি স্তরের দায়িত্ব আলাদা করে দেয়, যা অ্যাপ্লিকেশনটিকে আরো স্কেলেবল এবং মডুলার করে তোলে।
ASP.NET Core MVC (Model-View-Controller) একটি জনপ্রিয় আর্কিটেকচারাল প্যাটার্ন, যা ব্যবহারকারীর ইন্টারফেস, অ্যাপ্লিকেশন লজিক এবং ডেটা মডেল আলাদা রাখে। MVC প্রজেক্ট তৈরি করার মাধ্যমে আপনি ওয়েব অ্যাপ্লিকেশন তৈরি করতে পারবেন যা ডেটাবেসের সঙ্গে ইন্টারঅ্যাক্ট করবে এবং ব্যবহারকারীর আউটপুট দেখাবে।
এর জন্য আপনার মেশিনে .NET SDK এবং Visual Studio বা Visual Studio Code ইন্সটল থাকতে হবে। যদি আপনি এগুলো ইন্সটল করে থাকেন, তাহলে আপনি খুব সহজেই ASP.NET Core MVC প্রজেক্ট তৈরি করতে পারবেন।
F5
চাপুন, এটি আপনার প্রজেক্ট চালু করবে। আপনি ব্রাউজারে https://localhost:5001
এ গিয়ে অ্যাপ দেখতে পাবেন।যদি আপনি Visual Studio ব্যবহার না করতে চান, তাহলে আপনি .NET CLI (Command Line Interface) ব্যবহার করে প্রজেক্টটি তৈরি করতে পারবেন।
নিচের কমান্ডটি ব্যবহার করুন:
dotnet new mvc -n MyFirstMvcApp
এই কমান্ডটি MyFirstMvcApp
নামের একটি নতুন ASP.NET Core MVC প্রজেক্ট তৈরি করবে।
প্রজেক্ট তৈরি হলে, প্রজেক্ট ফোল্ডারে যেতে হবে:
cd MyFirstMvcApp
প্রজেক্ট চালানোর জন্য নিচের কমান্ডটি ব্যবহার করুন:
dotnet run
এটি আপনার প্রজেক্ট রান করবে এবং আপনি https://localhost:5001
এ গিয়ে অ্যাপটি দেখতে পারবেন।
ASP.NET Core MVC প্রজেক্ট তৈরি হলে, এর মধ্যে কিছু মৌলিক ফোল্ডার এবং ফাইল থাকে:
প্রথমে, একটি Controller তৈরি করুন যা আপনার অ্যাপ্লিকেশনের লজিক পরিচালনা করবে। Controllers
ফোল্ডারে একটি নতুন HomeController.cs
ফাইল তৈরি করুন এবং নিম্নলিখিত কোড যোগ করুন:
using Microsoft.AspNetCore.Mvc;
namespace MyFirstMvcApp.Controllers
{
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}
}
}
এখন, Views
ফোল্ডারে একটি Home
ফোল্ডার তৈরি করুন এবং তার মধ্যে Index.cshtml
ফাইল তৈরি করুন। এই ফাইলে HTML এবং Razor সিঙ্কট্যাক্স ব্যবহার করে কন্টেন্ট যোগ করুন:
@{
ViewData["Title"] = "Home Page";
}
<h1>Welcome to My First ASP.NET Core MVC App!</h1>
আপনার মডেল তৈরি করতে, Models
ফোল্ডারে একটি Product.cs
ফাইল তৈরি করুন:
namespace MyFirstMvcApp.Models
{
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}
}
ASP.NET Core MVC প্রজেক্ট তৈরি করা খুবই সহজ এবং দ্রুত। Visual Studio বা Command Line Interface (CLI) ব্যবহার করে আপনি একটি MVC প্রজেক্ট তৈরি করতে পারেন, এবং এর মধ্যে Controller, View, এবং Model যুক্ত করতে পারেন। এটি আপনাকে MVC প্যাটার্ন অনুসরণ করে একটি ওয়েব অ্যাপ্লিকেশন ডেভেলপ করতে সহায়তা করবে।
ASP.NET Core-এ Routing হলো একটি প্রক্রিয়া যা ইনকামিং HTTP রিকোয়েস্টকে সঠিক Controller এবং Action Method-এর সাথে ম্যাপ করে। এটি ASP.NET Core অ্যাপ্লিকেশনের অন্যতম গুরুত্বপূর্ণ অংশ, কারণ এটি ঠিক করে দেয় যে ব্যবহারকারীর রিকোয়েস্টের উপর ভিত্তি করে অ্যাপ্লিকেশন কীভাবে সাড়া দেবে।
Controller এবং Action Method হলো MVC (Model-View-Controller) আর্কিটেকচারের মৌলিক অংশ, যা অ্যাপ্লিকেশনের লজিক এবং ডেটা প্রসেসিং পরিচালনা করে।
Routing ASP.NET Core-এ ইনকামিং URL-এর ভিত্তিতে সঠিক Controller এবং Action Method নির্বাচন করার জন্য ব্যবহৃত হয়। এটি Middleware Pipeline-এর অংশ এবং Startup.cs
-এ কনফিগার করা হয়। Routing দুটি প্রধান পদ্ধতিতে কাজ করে:
Convention-based Routing হলো একটি রুল-ভিত্তিক পদ্ধতি যেখানে Routing প্যাটার্নগুলো নির্দিষ্টভাবে Startup.cs
-এর মধ্যে সংজ্ঞায়িত করা হয়।
Startup.cs
ফাইলে নিচের কোডটি দেখুন:
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
{controller=Home}/{action=Index}/{id?}
{controller=Home}
: ডিফল্ট Controller হলো Home
।{action=Index}
: ডিফল্ট Action Method হলো Index
।{id?}
: id
একটি অপশনাল প্যারামিটার।যদি ব্যবহারকারী /Products/Details/5
URL প্রদান করেন:
Products
Details
5
Attribute Routing হলো একটি পদ্ধতি যেখানে Routing নিয়মগুলো সরাসরি Controller এবং Action Method-এর উপরে সংজ্ঞায়িত করা হয়। এটি সাধারণত বেশি স্পষ্ট এবং সহজতর হয়।
[Route("products")]
public class ProductsController : Controller
{
[Route("details/{id}")]
public IActionResult Details(int id)
{
// প্রোডাক্টের ডিটেইলস রিটার্ন করুন
return View();
}
}
/products
/products/details/{id}
যদি ব্যবহারকারী /products/details/10
URL প্রদান করেন:
ProductsController
Details
10
Controller হলো ASP.NET Core-এ একটি ক্লাস, যা ব্যবহারকারীর রিকোয়েস্ট প্রসেস করে এবং উপযুক্ত রেসপন্স প্রদান করে। এটি সাধারণত Controller
ক্লাস থেকে ইনহেরিট করে।
Action Method হলো Controller-এর একটি মেথড, যা নির্দিষ্ট রিকোয়েস্টের জন্য লজিক প্রসেস করে। Action Method সাধারণত IActionResult
বা অন্য কোনো ভ্যালু রিটার্ন করে।
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}
public IActionResult About()
{
return View();
}
}
/Home/Index
: Index()
Method কল হবে।/Home/About
: About()
Method কল হবে।Routing-এ Route Parameters ব্যবহার করে ডাইনামিক ডেটা পাস করা যায়। এটি Convention-based এবং Attribute Routing-এ উভয় ক্ষেত্রেই কাজ করে।
[Route("products/{id}")]
public IActionResult Details(int id)
{
// ডাটাবেজ থেকে প্রোডাক্টের তথ্য বের করুন
var product = _productService.GetProductById(id);
return View(product);
}
/products/5
5
Routing-এ প্যারামিটারগুলো Optional করা যায়, যা URL না থাকলেও কাজ করবে।
[Route("products/{id?}")]
public IActionResult Details(int? id)
{
if (id == null)
{
// ডিফল্ট ভিউ রিটার্ন করুন
return View("AllProducts");
}
return View();
}
Routing-এ Default Values সেট করা যায়, যা প্যারামিটার না থাকলে ব্যবহার করা হবে।
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
/
→ Controller: Home
, Action: Index
Routing ASP.NET Core-এ Middleware হিসাবে কাজ করে এবং এটি Startup.cs
-এ কনফিগার করতে হয়।
public void Configure(IApplicationBuilder app)
{
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
Routing এবং Controller Action ASP.NET Core-এ ব্যবহারকারীর রিকোয়েস্ট পরিচালনা করার একটি শক্তিশালী উপায়। এটি আপনার অ্যাপ্লিকেশনকে আরও ডাইনামিক, ফ্লেক্সিবল এবং ব্যবহারকারীর চাহিদা অনুযায়ী কাস্টমাইজ করার সুযোগ দেয়।
common.read_more